home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / v8n13.arc / NEWTIME.BAS < prev    next >
BASIC Source File  |  1989-06-10  |  2KB  |  92 lines

  1.  DEF FnNewTime$ (t1$, Op$, t2$)
  2.  
  3.      hour1 = VAL(t1$)            'parse hour values
  4.      hour2 = VAL(t2$)
  5.     
  6.      min1 = VAL(MID$(t1$, 4))    'parse minute values
  7.      min2 = VAL(MID$(t2$, 4))
  8.     
  9.      sec1 = VAL(RIGHT$(t1$, 2))  'parse second values
  10.      sec2 = VAL(RIGHT$(t2$, 2))
  11.     
  12.      IF Op$ = "+" THEN           'add times
  13.     
  14.         hourval = hour1 + hour2  'add hours
  15.         minval = min1 + min2     'add minutes
  16.         secval = sec1 + sec2     'add seconds
  17.     
  18.         IF secval > 59 THEN      'check to carry a minute
  19.            secval = secval - 60
  20.            minval = minval + 1
  21.         END IF
  22.     
  23.         IF minval > 59 THEN      'check to carry an hour
  24.            minval = minval - 60
  25.            hourval = hourval + 1
  26.         END IF
  27.     
  28.         DO WHILE hourval > 23    'check to see if next day
  29.            hourval = hourval - 24
  30.         LOOP
  31.     
  32.      ELSEIF Op$ = "-" THEN       'subtract times
  33.     
  34.         IF sec2 > sec1 THEN      'look to borrow a minute
  35.            sec1 = sec1 + 60
  36.            min1 = min1 - 1
  37.         END IF
  38.         secval = sec1 - sec2     'subtract seconds
  39.     
  40.         IF min2 > min1 THEN      'look to borrow an hour
  41.            min1 = min1 + 60
  42.            hour1 = hour1 - 1
  43.         END IF
  44.         minval = min1 - min2
  45.     
  46.         IF hour2 > hour1 THEN    'look to borrow a day
  47.            DO UNTIL hour1 > hour2
  48.               hour1 = hour1 + 24
  49.            LOOP
  50.         END IF
  51.         hourval = hour1 - hour2
  52.     
  53.      'wasn't "+" or "-"
  54.      ELSE
  55.         FnNewTime$ = "Illegal Operation"
  56.         EXIT DEF
  57.      END IF
  58.     
  59.      'set the final result
  60.      hour$ = MID$(STR$(hourval), 2)
  61.      minute$ = MID$(STR$(minval), 2)
  62.      sec$ = MID$(STR$(secval), 2)
  63.     
  64.      'pad any empty slots
  65.      WHILE LEN(hour$) < 2
  66.         hour$ = "0" + hour$
  67.      WEND
  68.     
  69.      WHILE LEN(minute$) < 2
  70.         minute$ = "0" + minute$
  71.      WEND
  72.     
  73.      WHILE LEN(sec$) < 2
  74.         sec$ = "0" + sec$
  75.      WEND
  76.     
  77.      FnNewTime$ = hour$ + ":" + minute$ + ":" + sec$
  78.     
  79.  END DEF
  80.     
  81.  INPUT "First time : ", t1$
  82.  INPUT "Second time: ", t2$
  83.  INPUT "Operator (+/-): ", Op$
  84.     
  85.  IF LEN(t1$) <> 8 OR LEN(t2$) <> 8 OR (Op$ <> "+" AND Op$ <> "-") THEN
  86.     PRINT "Invalid format!"
  87.     END
  88.  END IF
  89.     
  90.  PRINT FnNewTime$(t1$, Op$, t2$)
  91.  
  92.